import request from "./request";

// 注册请求拦截器
request.addRequestInterceptor((config) => {
  // 示例：添加时间戳参数，防止缓存
  if (config.method.toUpperCase() === "GET") {
    config.data = config.data || {};
    config.data._t = Date.now();
  }

  // 示例：打印请求信息
  console.log("请求拦截器 - 请求地址:", config.url);
  console.log("请求拦截器 - 请求方法:", config.method);
  console.log("请求拦截器 - 请求数据:", config.data);

  // 返回修改后的配置
  return config;
});

// 注册响应拦截器
request.addResponseInterceptor((response, config) => {
  // 示例：打印响应信息
  console.log("响应拦截器 - 请求地址:", config.url);
  console.log("响应拦截器 - 响应数据:", response);

  // 示例：统一处理响应结构
  if (response && response.code !== undefined) {
    // 假设后端返回的数据结构为 { code: 0, data: {}, message: '' }
    if (response.code === 0) {
      // 正常响应，只返回data部分
      return response.data;
    } else {
      // 业务错误，可以在这里统一处理
      console.error("业务错误:", response.message);

      // 如果想要在拦截器中处理业务错误，可以抛出异常
      // throw new Error(response.message);
    }
  }

  // 返回原始响应
  return response;
});

/**
 * 使用示例:
 *
 * // 在应用入口文件中导入拦截器配置
 * import './api/interceptors';
 *
 * // 然后正常使用request进行请求，所有请求都会经过拦截器处理
 * import request from './api/request';
 *
 * request.get('/api/data').then(res => {
 *   console.log('请求结果:', res);
 * });
 */

export default {
  // 添加自定义请求拦截器
  addCustomRequestInterceptor(interceptor) {
    request.addRequestInterceptor(interceptor);
  },

  // 添加自定义响应拦截器
  addCustomResponseInterceptor(interceptor) {
    request.addResponseInterceptor(interceptor);
  },

  // 重置所有拦截器
  resetInterceptors() {
    request.clearInterceptors();

    // 重新注册基本拦截器（如果需要）
    this.setupBasicInterceptors();
  },

  // 设置基本拦截器
  setupBasicInterceptors() {
    // 这里可以添加必要的基本拦截器
  },
};
